#include <rtthread.h>
#include "drv_common.h"
#include "rtdevice.h"

#define DBG_TAG "led.c"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

#define LED_RED_RTTPIN  (GET_PIN(B, 0)) // RGB 红色LED -> PB0

/**
 * @brief  开LED
 * @param  无
 * @return 无
 */
void led_on(void)
{
    rt_pin_write(LED_RED_RTTPIN, PIN_LOW);
}

/**
 * @brief  关LED
 * @param  无
 * @return 无
 */
void led_off(void)
{
    rt_pin_write(LED_RED_RTTPIN, PIN_HIGH);
}

/**
 * @brief  LED初始化
 * @param  无
 * @return 无
 */
void led_init(void)
{
    rt_pin_mode(LED_RED_RTTPIN, PIN_MODE_OUTPUT);
}

/**
 * @brief  心跳灯线程
 * @param  parameter 线程的入口参数
 * @return 无
 */
void heartbeat_led_thread_entry(void *parameter)
{
    led_init();

    while (1)
    {
        led_on();
        rt_thread_mdelay(300);
        led_off();
        rt_thread_mdelay(300);
    }
}

/**
 * @brief  启动心跳灯线程
 * @param  无
 * @return 无
 */
int start_heartbeat_led_thread(void)
{
    /* 创建心跳灯处理线程 */
    rt_thread_t thread = rt_thread_create("heartbeat_led_thread", heartbeat_led_thread_entry, RT_NULL, 1024, 20, 20);
    if (thread != RT_NULL)
    {
        rt_thread_startup(thread);  // 创建成功则启动线程
    }
    else
    {
        LOG_E("create heartbeat_led_thread failed");
        return (-RT_ERROR);
    }

    return RT_EOK;
}
